package top.as.sean.biz.system;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import top.as.sean.dao.dto.system.AuthUserDto;
import top.as.sean.dao.dto.system.LoginDto;
import top.as.sean.dao.dto.system.UserAdd;
import top.as.sean.dao.dto.system.UserEdit;
import top.as.sean.dao.dto.system.UserPage;
import top.as.sean.dao.entity.pojo.system.User;
import top.as.sean.dao.vo.system.AuthUserVo;
import top.as.sean.dao.vo.system.MenuVo;
import top.as.sean.dao.vo.system.UserInfo;
import top.as.sean.dao.vo.system.UserPageVo;

import java.util.List;

/**
 * 用户
 *
 * @author: ArchieSean
 * @create: 2022/11/7
 */
public interface IUser extends IService<User> {

    /**
     * 登录
     *
     * @param dto 入参
     * @return userinfo
     */
    String login(LoginDto dto);

    /**
     * 新增用户
     *
     * @param dto 新增用户
     * @return boolean
     */
    Boolean addUser(UserAdd dto);

    /**
     * 分页查询用户信息
     *
     * @param dto 入参
     * @return page
     */
    Page<UserPageVo> userPage(UserPage dto);

    /**
     * 删除用户
     *
     * @param ids 用户ids
     */
    void deleteUser(List<Long> ids);

    /**
     * 编辑用户信息
     *
     * @param dto 入参
     * @return boolean
     */
    Boolean editUser(UserEdit dto);

    /**
     * 分配用户列表
     *
     * @param dto  入参
     * @param flag 正向、反向查询标记
     * @return page
     */
    Page<AuthUserVo> getAuthList(AuthUserDto dto, Boolean flag);

    /***
     * 用户信息
     * @return obj
     */
    UserInfo getInfo();

    /**
     * 获取动态路由
     *
     * @return list
     */
    List<MenuVo> getRouter();

    /**
     * 退出登录
     */
    void lagoutUser();

}
